package controllers;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import modelo.Cita;
import modelo.Estadocita;
import modelo.Persona;
import modelo.Salon;
import modelo.Telefonopersona;
import modelo.Tiposuscripcion;
import services.CitaService;
import services.EstadocitaService;
import services.SalonService;


@ManagedBean
@SessionScoped
public class CitaBean implements Serializable{

	private static final long serialVersionUID = 34502539648747461L;
	
	private Persona persona=new Persona();
	
	@ManagedProperty("#{citaService}")
	private CitaService serviceCita;
	private Cita cita =new Cita();

	private List<Cita> listaTabla;
	private Cita citaSelected;
	
	//Salones
	@ManagedProperty("#{salonService}")
	private SalonService salonService;
	private List<Salon> ListaSalones;
	private Integer salonSelected;
	
	//estados
	
	@ManagedProperty("#{estadocitaService}")
	private EstadocitaService estadocitaService;
	private List<Estadocita> listaEstadocita =new ArrayList<>();
	private Estadocita estadoSelected;
	
	//telefonos
	private Telefonopersona teleFijo;
	private Telefonopersona teleMovil;
	
	public EstadocitaService getEstadocitaService() {
		return estadocitaService;
	}

	public void setEstadocitaService(EstadocitaService estadocitaService) {
		this.estadocitaService = estadocitaService;
	}


	
	@PostConstruct
	private void init() {
		//inicializo valores
		teleFijo = new Telefonopersona();
		teleMovil = new Telefonopersona();
		citaSelected=new Cita();
		
		//Cargo combos
		listaEstadocita=estadocitaService.getListaEstadocita();
		ListaSalones=salonService.getListaSalones();
		listaTabla=serviceCita.obtenerCitas();
	}
			
	public List<Cita> getListaTabla() {
		return listaTabla;
	}

	public void setListaTabla(List<Cita> listaTabla) {
		this.listaTabla = listaTabla;
	}

	
	public void guardarCita() throws Exception{
		//listaTabla.remove(citaSelected);
		serviceCita.actualizarCita(citaSelected,estadoSelected);

	}

	public CitaService getServiceCita() {
		return serviceCita;
	}

	public void setServiceCita(CitaService serviceCita) {
		this.serviceCita = serviceCita;
	}

	public Persona getPersona() {
		return persona;
	}

	public void setPersona(Persona persona) {
		this.persona = persona;
	}

	public Cita getCitaSelected() {
		return citaSelected;
	}

	public Cita getCita() {
		return cita;
	}

	public void setCita(Cita cita) {
		this.cita = cita;
	}

	public Telefonopersona getTeleFijo() {
		return teleFijo;
	}

	public void setTeleFijo(Telefonopersona teleFijo) {
		this.teleFijo = teleFijo;
	}

	public Telefonopersona getTeleMovil() {
		return teleMovil;
	}

	public void setTeleMovil(Telefonopersona teleMovil) {
		this.teleMovil = teleMovil;
	}

	public List<Salon> getListaSalones() {
		return ListaSalones;
	}

	public void setListaSalones(List<Salon> listaSalones) {
		ListaSalones = listaSalones;
	}

	public Integer getSalonSelected() {
		return salonSelected;
	}

	public void setSalonSelected(Integer salonSelected) 
	{
		this.salonSelected = salonSelected;
	}

	
	public List<Estadocita> getListaEstadocita() {
		return listaEstadocita;
	}

	public void setListaEstadocita(List<Estadocita> listaEstadocita) {
		this.listaEstadocita = listaEstadocita;
	}

	public void setCitaSelected(Cita citaSelected) {
		this.citaSelected = citaSelected;
	}

	public SalonService getSalonService() {
		return salonService;
	}

	public void setSalonService(SalonService salonService) {
		this.salonService = salonService;
	}

	public Estadocita getEstadoSelected() {
		return estadoSelected;
	}

	public void setEstadoSelected(Estadocita estadoSelected) {
		this.estadoSelected = estadoSelected;
	}
}
